package com.youlai.jdk;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;

/**
 * 发行日期：2021年3月16日
 * 引入了Vector API，支持向量化计算
 *
 * @author zc
 * @date 2023-03-25 22:19
 */
@ExtendWith(VectorExtension.class)
public class Java16 {

    /**
     * 向量化计算是一种将单个操作应用于多个数据元素的技术，这些数据元素通常存储在数组中。
     * 例如，对于一个整数数组，可以将一个操作应用于数组中的所有元素，而不是一个一个地应用。
     * 这种技术可以显著提高应用程序的性能，因为它可以同时处理多个数据元素。
     * 例如，Vector API提供了一个VectorSpecies类，它描述了一个特定的向量化计算的数据类型和长度。
     * Vector API还提供了一个Vector类，它表示一个特定的向量化计算的数据类型和长度。
     * Vector API还提供了一组操作，用于执行向量化计算。
     */
    @Test
    void vectorAPI() {
        //将两个长度为8的向量相加，并将结果存储在第三个向量中。最后，它输出了结果向量的所有元素。
//        int n = 8; // 向量长度
//        VectorSpecies<Float> species = FloatVector.SPECIES_256; // 向量规格
//        float[] a = new float[n]; // 第一个向量
//        float[] b = new float[n]; // 第二个向量
//        float[] c = new float[n]; // 结果向量
//
//        // 初始化向量a和b
//        for (int i = 0; i < n; i++) {
//            a[i] = i;
//            b[i] = i * 2;
//        }
//
//        // 创建向量对象
//        FloatVector va = FloatVector.fromArray(species, a, 0);
//        FloatVector vb = FloatVector.fromArray(species, b, 0);
//
//        // 计算向量和
//        FloatVector vc = va.add(vb);
//
//        // 将结果存储到数组c中
//        vc.intoArray(c, 0);
//
//        // 输出结果
//        for (int i = 0; i < n; i++) {
//            System.out.println(c[i]);
//        }
    }


}
